HPB Update Connector 1.1.6
==========================

Joomla: 6.0 oder neuer
PHP:    8.3 oder neuer

Installation
------------
Die ZIP-Datei in Joomla unter System > Installieren > Erweiterungen hochladen.
Das Plugin wird automatisch aktiviert und erzeugt einen individuellen 64-Zeichen-Schlüssel.
Den Schlüssel finden Sie unter System > Verwalten > Plugins > HPB Update Connector.

Endpunkt
--------
/index.php?option=com_ajax&plugin=hpbupdateconnector&format=json&action=ping

Bearer-Test
-----------
curl -H "X-HPB-Token: IHR_SCHLUESSEL" \
  "https://example.de/index.php?option=com_ajax&plugin=hpbupdateconnector&format=json&action=ping"

Aktionen
--------
GET  ping
GET  status
GET  extensions
POST check_updates
GET  updates
POST update_extension   JSON, Formulardaten oder URL-Parameter: update_id=123
GET  logs

HMAC-Signatur
-------------
Header:
X-HPB-Timestamp: Unix-Zeitstempel
X-HPB-Nonce:      einmaliger Wert mit mindestens 16 Zeichen
X-HPB-Signature:  hexadezimale SHA-256-HMAC-Signatur

Zu signierender Text:
TIMESTAMP\nNONCE\nHTTP-METHODE\nAKTION\nSHA256-HEX-DES-RAW-BODYS

Hinweise
--------
- Joomla-Core-Updates sind in Version 1.1.4 verfügbar, aber standardmäßig deaktiviert.
- Es wird jeweils nur ein Erweiterungsupdate pro Anfrage ausgeführt.
- Kostenpflichtige Erweiterungen benötigen weiterhin eine gültige Download-ID/Lizenz.
- Vor Produktiveinsatz zuerst auf Testseiten prüfen und Backups sicherstellen.

Änderungen in 1.1.3
--------------------
- action=updates führt standardmäßig selbst eine vollständige, erzwungene Joomla-Update-Suche aus.
- Der Joomla-Update-Cache wird entsprechend der Plugin-Einstellung vorher geleert.
- Alle aktivierten Update-Server werden mit Cache-Zeit 0 sofort neu abgefragt.
- Ein manueller Klick auf „Auf Updates prüfen“ im Joomla-Backend ist nicht mehr nötig.
- Mit &refresh=0 kann bei Bedarf nur die bereits gespeicherte Update-Liste gelesen werden.

Updates automatisch neu prüfen und anzeigen
-------------------------------------------
GET action=updates

Nur den vorhandenen Joomla-Update-Cache lesen
---------------------------------------------
GET action=updates&refresh=0

PowerShell-Beispiel mit JSON
----------------------------
curl.exe -X POST -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" -H "X-HPB-Token: IHR_SCHLUESSEL" -H "Content-Type: application/json" --data-raw '{"update_id":123}' "https://example.de/index.php?option=com_ajax&plugin=hpbupdateconnector&format=json&action=update_extension"

PowerShell-Beispiel mit Formulardaten
-------------------------------------
curl.exe -X POST -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" -H "X-HPB-Token: IHR_SCHLUESSEL" --data-urlencode "update_id=123" "https://example.de/index.php?option=com_ajax&plugin=hpbupdateconnector&format=json&action=update_extension"


PowerShell-Beispiel ohne Request-Body
-------------------------------------
curl.exe -X POST -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" -H "X-HPB-Token: IHR_SCHLUESSEL" -H "X-HPB-Update-ID: 123" "https://example.de/index.php?option=com_ajax&plugin=hpbupdateconnector&format=json&action=update_extension"

DIAGNOSE
--------
GET action=diagnostics&update_id=123 zeigt, über welchen Kanal Joomla die ID empfängt.


Joomla Core-Updates ab 1.1.3
--------------------------------
Neue geschützte Aktionen: core_status, prepare_core_update, step_core_update, finalize_core_update und abort_core_update.
Core-Updates sind nach der Installation standardmäßig deaktiviert. Zuerst im Plugin "Remote-Joomla-Core-Updates erlauben" aktivieren. Hauptversionswechsel bleiben separat gesperrt.
Der Ablauf verwendet die Joomla-eigene Download-, Prüfsummen-, Entpackungs- und Finalisierungslogik.


Korrektur in 1.1.3
-------------------
Die Core-Prüfung bewahrt einen bereits von Joomla gefundenen Core-Update-Datensatz und nutzt ihn als Fallback, wenn das Joomla-Update-Modell das Update nicht erneut meldet.

Korrektur in 1.1.3
- Die Joomla-Core-Updatequelle wird vor der Core-Prüfung ausdrücklich aktiviert.
- Der Core-Cache wird wie in Joomlas eigener Update-Komponente geleert.
- Fehlgeschlagene technische Voraussetzungen werden in core_status einzeln ausgegeben.

Korrektur der Core-Erkennung in 1.1.3
-------------------------------------
- Verwendet für stabile Remote-Core-Updates den offiziellen Joomla-Standardkanal.
- Prüft den TUF-Root-Datensatz der Joomla-Core-Updatequelle.
- Stellt einen fehlenden TUF-Root ausschließlich aus der lokalen offiziellen Joomla-SQL-Datei wieder her.
- Löscht niemals vorhandene vertrauenswürdige Root-Schlüssel.
- Setzt nur austauschbare TUF-Cachefelder (targets, snapshot, timestamp) zurück.
- Verwendet anschließend ein frisches Joomla-Update-Modell.
- core_status liefert zusätzliche TUF-Diagnosen und Joomla-Update-Meldungen.


Korrektur in 1.1.4
-------------------
- Behebt die Core-Erkennung, wenn in Joomla der Updatekanal "next" gespeichert ist.
- Der Connector setzt den Kanal für den aktuellen Core-Prüf- und Vorbereitungsvorgang im Arbeitsspeicher auf "default".
- Die gespeicherte Joomla-Komponentenkonfiguration wird während der Statusprüfung nicht geändert.
- Dadurch sucht Joomla innerhalb des stabilen aktuellen Hauptkanals, z. B. Joomla 6.0.2 -> 6.1.2.


Korrektur in 1.1.5
-------------------
- Behebt die Vorbereitung von Joomla-Core-Updates auf Joomla 6.0.x.
- Joomla 6.0.x kann das Paket korrekt herunterladen und update.php erzeugen, aber keinen Dateinamen in prepareAutoUpdate() zurückgeben.
- Der Connector liest Dateiname, Passwort und Dateigröße in diesem Fall sicher aus der von Joomla selbst erzeugten update.php.
- Der Paketpfad muss im konfigurierten Joomla-Temporärverzeichnis liegen.
- Manager, Update-Erkennung, Erweiterungsupdates und Warteschlange bleiben unverändert.


Korrektur in 1.1.6
-------------------
- Führt sämtliche Joomla-Core-Entpackungsschritte innerhalb einer einzigen Connector-Anfrage aus.
- Verhindert, dass Joomla zwischen Teilschritten mit teilweise ausgetauschten Core-Dateien neu gestartet wird.
- Führt die Joomla-Dateifinalisierung unmittelbar nach dem letzten Entpackungsschritt aus.
- Unterstützt die Fortsetzung eines mit 1.1.5 begonnenen Vorgangs nach Verwendung des Wiederherstellungsskripts.
